/*Copyright (C) 2024  深圳极向量科技有限公司 All Rights Reserved.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.*/

package neatlogic.framework.cmdb.exception.attr;

import neatlogic.framework.cmdb.dto.ci.AttrVo;
import neatlogic.framework.cmdb.dto.ci.CiVo;
import neatlogic.framework.exception.core.ApiRuntimeException;

import java.util.List;
import java.util.stream.Collectors;

public class AttrIsUsedInExpressionException extends ApiRuntimeException {
    public AttrIsUsedInExpressionException(AttrVo attrVo) {
        super("当前属性已被表达式属性“{0}({1}})”引用，请先删除。", attrVo.getLabel(), attrVo.getName());
    }

    public AttrIsUsedInExpressionException(CiVo ciVo, AttrVo attrVo) {
        super("当前属性已被模型“{0}({1})”的表达式属性“{2}({3})”引用，请先删除。", ciVo.getLabel(), ciVo.getName(), attrVo.getLabel(), attrVo.getName());
    }

    public AttrIsUsedInExpressionException(List<AttrVo> attrList) {
        super("表达式属性“{0}”引用了父模型属性，请先删除。" , attrList.stream().map(a -> a.getLabel() + "(" + a.getName() + ")").collect(Collectors.joining("”,“")) );
    }

}
